package moduloRemoto.bo;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import moduloRemoto.bo.interfaces.ColaboradorRemote;
import moduloRemoto.dao.interfaces.ServerLocal;
import moduloRemoto.pojo.Atividade;
import moduloRemoto.pojo.Colaborador;

import org.jboss.annotation.ejb.RemoteBinding;

@Stateless
@Remote(ColaboradorRemote.class)
@RemoteBinding(jndiBinding="ejb/colaborador")
public class ColaboradorBO implements ColaboradorRemote
{
	@EJB 
	private ServerLocal dao;


	@Override
	public Colaborador persistir(Colaborador objCol)
	{
		if (objCol == null)
			return null;

		try
		{
			if (objCol.getIdCol() > 0)
				objCol = dao.update(objCol);
			else
				objCol = dao.insert(objCol);
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return null;
		}

		return objCol;
	}
	
	@Override
	public Boolean excluir(int idCol)
	{
		if (idCol <= 0)
			return false;
		
		try
		{
			Colaborador objCol = this.carregarObjeto(idCol);

			if (objCol != null)
				dao.remove(objCol);
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return false;
		}
		
		return true;
	}
	
	@Override
	public Colaborador carregarObjeto(int idCol)
	{
		if (idCol <= 0)
			return null;
		
		Colaborador objCol = null;
		
		try
		{
			objCol = dao.find(Colaborador.class, idCol);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		return objCol;
	}
	
	@Override
	public List<Colaborador> carregarListaColaboradores()
	{
		List<Colaborador> listaColaboradores = new ArrayList<Colaborador>();
		
		try
		{
			for (Object objeto : dao.executeQuery("SELECT c FROM Colaborador c"))
				listaColaboradores.add((Colaborador)objeto);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		return listaColaboradores;
	}
	
	@Override
	public List<Colaborador> getColaboradoresByProjeto(int idPro)
	{
		// TODO Implementar!
		return null;
	}

	@Override
	public List<Colaborador> getColaboradoresByTarefa(int idTar)
	{
		List<Colaborador> listaColaboradores = new ArrayList<Colaborador>();

		try
		{
			for (Object objeto : dao.executeQuery("SELECT a FROM Atividade a WHERE a.primaryKey.tarefaAti = " + idTar))
				listaColaboradores.add(((Atividade)objeto).getColaborador());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		return listaColaboradores;
	}
}